perm filename HHT5.FAI[CMS,LCS] blob
sn#404772 filedate 1978-12-15 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00016 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00003 00002 LOAD THIS FILE AND SAVE AS "HHT.DMP"
C00005 00003 Reset
C00007 00004 REFRESH LOOP
C00009 00005 WAIT LOOP AND SETUP
C00012 00006 UPDATE SCREEN
C00014 00007 KB INTERRUPT ROUTINE
C00017 00008 RS232 INTERRUPT ROUTINE
C00019 00009 FOLLOW CURSOR
C00021 00010 RS232 CONTROL
C00023 00011 SCROLL UP
C00024 00012 CK IF IN WINDOW
C00026 00013 HOME CURSOR.
C00028 00014 ASCII TABLE BITS 7 6 5 4 3 2 1 0
C00031 00015 CHR GEN = GRAPHICS
C00035 00016 CGEN2: 000 ↔ 017 ↔ 177 ↔ 170 ↔ 010 ↔ 010 ↔ 010 ↔ 000
C00039 ENDMK
C⊗;
; LOAD THIS FILE AND SAVE AS "HHT.DMP"
; THEN EX CON11.FAI[CMS,LCS] TO CONVERT TO PDP-11 LOADER FORMAT
; FINAL FILE IS "LOAD11.HHT"
; BIT RATE GEN CODES
; 0 = 0 10 = 9600
; 1 = 19.2K 11 = 4800
; 2 = 50 12 = 1800
; 3 = 75 13 = 1200
; 4 = 134.5 14 = 2400
; 5 = 200 15 = 300
; 6 = 600 16 = 150
; 7 = 2400 17 = 110
TITLE HHT
.INSERT ASMBL.FAI[CMS,LCS]
CPL ← = 28 ;CHRS PER LINE
NCHRS ← = 112 ;CHRS PER SCREEN
; Zpage ram
LOC 0
COL: 0
CUR: 0
0
WINDOW: 0
0
TMP: 0
0
LINL: 0
CHRL: 0
BRT: 0
NWAIT: 0
UPFLG: 0
CURVIS: 0
DIS: 0
0
SHIFT: 0
WINK: 0
SHFT: 0 ;Keyboard shift flag.
OFFL: 0 ;Off delay count low.
LOC 600
REBUF0: BLOCK = 128 ;REFRESH BUFFER
; LOC 1000
REBUF1: BLOCK = 128
; LOC 1200
REBUF2: BLOCK = 128
; LOC 1400
REBUF3: BLOCK = 128
; LOC 1600
REBUF4: BLOCK = 128
BLOCK = 1024
LOC 4000
ABUF: 0 ;ASCII CHR BUF
; Reset
LOC 174000 ;LOC 174000
RSTA: LDAI 377 ;TURN OFF COLS
STA COLREG
CLD ;CLEAR DECIMAL MODE
LDXI 177 ;STACK DEPTH
TXS ;SETUP STACK
LDAI 0 ;SET UP BRIGHTNESS
STAZ BRT
; SETUP AND CLEAR SCREEN
;CLEAR ABUF, SETUP CURSOR AND WINDOW
SD ← 10 ;START OF ABUF
ED ← 14 ;END OF ABUF
JSR HOME ;SETUP CURSOR
LDAI =16 ;NUMBER OF LINES IN MEM
STAZ TMP
CLRM: JSR LF ;<lf> THEN CLEAR LINE *16
DECZ TMP
BNE CLRM
; INIT I/O
;INIT RS232
SIODEF ← 225 ;UART CONTROL WORD
ACIAC ← 77776 ;UART CONTROL REG ADDRESS
ACIAD ← 77777 ;UART DATA REG ADDRESS
LDAI 3 ;RESET ACIA
STA ACIAC
LDAI SIODEF ;SETUP DEFAULT I/O CONTROL
STA ACIAC
;INIT KB SCANER
KBD ← 23776 ;KEYBOARD DATA REGISTER ADDRESS
KBC ← 23777 ;KEYBOARD CONTROL REGISTER ADDRESS
LDAI 2 ;KB DPY MODE SET
STA KBC
LDAI 60 ;KB CLK DIV
STA KBC
LDAI 302 ;CLEAR KB INTERUPT
STA KBC
LDAI 100 ;READ KB
STA KBC
LDXI 377
STXZ OFFL ;Setup off delay.
INX
STXZ SHFT ;Reset shift flag.
CLI ;ENABLE INTERRUPTS
; REFRESH LOOP
NCHRS ← =112 ;NUMBER OF CHRS ON SCREEN
DPYSR ← 27777 ;DISPLAY SHIFT REGISTER ADDRESS
LDXI NCHRS-1
RELOOP: LDAI 376
STAZ COL ;SETUP COL BIT 1
; CY
SLOOP0: LDAX REBUF0 ;PUT FIRST COL IN SHIFT 4
STA DPYSR ;REGISTER STARTING WITH LAST CHR 4
DEX ; 2
BPL SLOOP0 ; _3_
JSR NXCOL ;TURN ON COL AND WAIT 5+(13*112)=1461
SLOOP1: LDAX REBUF1 ;SECOND
STA DPYSR
DEX
BPL SLOOP1
JSR NXCOL
SLOOP2: LDAX REBUF2 ;THIRD
STA DPYSR
DEX
BPL SLOOP2
JSR NXCOL
SLOOP3: LDAX REBUF3 ;FORTH
STA DPYSR
DEX
BPL SLOOP3
JSR NXCOL
SLOOP4: LDAX REBUF4 ;FIFTH
STA DPYSR
DEX
BPL SLOOP4
JSR NXCOL
JMP RELOOP
; WAIT LOOP AND SETUP
COLREG ← 33777 ;COL ENABLE REGISTER ADDRESS
SPEED ← = 36 ;SPEED OF SHIFT RIGHT IN ms * 2
; TURN ON COL CY
NXCOL: LDAZ COL ; 3
STA COLREG ;TURN ON COL 4
SEC ; 2
ROLZ COL ;SHIFT FOR NEXT COL 5
; WAIT(BRIGHTNESS) Tcy = 1488 = .9916 ms
LDXZ BRT ; 3
LDAX BTBL ; 4
STAZ NWAIT ; 4
WAIT1: DECZ NWAIT ; 5
BNE WAIT1 ; 3
INCZ WINK ; 5
BEQ BLINK ;TIME TO BLINK 2
GOWAIT: LDAX OFFTBL ; 4
STAZ NWAIT ;SETUP OFF WAIT 4
LDXI NCHRS-1 ; 2
; TURN OFF COL
LDAI 377 ; 2
STA COLREG ;TURN OFF COL 4
LDAZ UPFLG ;CK IF UPDATE FLAG SET 3
BNE CKSHFT ; 2
; WAIT(¬BRIGHTNESS)
WAIT2: DECZ NWAIT ; 5
BNE WAIT2 ; 3
RTS ; 6
; BRIGHTNESS TABLES
BTBL: =80 ↔ =200
OFFTBL: =120 ↔ 1
; BLINK CURSOR
BLINK: DECZ OFFL ;Off delay.
BNE SWTCH
LDAI 377
STA COLREG ;Turn off display.
OFF: BITZ OFFL ;Wait until KB or RS232.
BPL OFF
SWTCH: JSR SHOCUR ;XOR CURSOR INTO REBUF
JMP GOWAIT
; CHECK FOR RIGHT SHIFT
CKSHFT: BPL UPDATE ;CK RIGHT SHIFT FLAG
DECZ SHIFT ;SEE IF TIME TO SHIFT
BNE WAIT2 ;CK UPDATE?
LDAI SPEED
STAZ SHIFT
SEI ;MASK OUT INTERRUPTS
LDYZ WINDOW
INY
TYA
ANDI 77
CMPI 45 ;CHECK IF AT LEFT EDGE
BCS EDGE
STYZ WINDOW
JSR CKVIS ;SETUP Y INDEX AND DISTANCE
CLI ;ENABLE INTERUPTS
JMP UPDPY
EDGE: LDAZ UPFLG
ANDI 177 ;TURN OFF RIGHT SHIFT FLAG
STAZ UPFLG
CLI ;ENABLE INTERRUPTS
BEQ WAIT2 ;FALL THROUGH TO UPDATE
; UPDATE SCREEN
UPDATE: LDAI 0 ;RESET UDATE FLAG
STAZ UPFLG
UPDPY: LDAZ WINDOW ;COPY WINDOW INTO TEMP
STAZ TMP
LDAZ WINDOW+1
STAZ TMP+1
LDAI 4 ;NUMBER OF LINES PER SCREEN
STAZ LINL
LDYI 0
LLOOP: LDAI CPL ;28 CHRS TO GO
STAZ CHRL
ULOOP: LDXI 0
LDAIX TMP ;WRITE CHRGEN BITS INTO REBUF
JSR WCHR
INY
INCZ TMP
BNE CKCHRL
INCZ TMP+1
LDAZ TMP+1
CMPI ED
BNE CKCHRL
LDAI SD
STAZ TMP+1
CKCHRL: DECZ CHRL
BNE ULOOP ;MORE CHRS LEFT ON LINE
LDAZ TMP
CLC
ADCI 44 ;100-CPL = NEXT LINE
STAZ TMP
BCC NOOF
INCZ TMP+1
LDAZ TMP+1
CMPI ED
BNE NOOF
LDAI SD
STAZ TMP+1
NOOF: DECZ LINL
BNE LLOOP ;DO NEXT LINE
JSR SHOCUR ;SHOW CURSOR IF ON SCREEN
LDXI NCHRS-1 ;SETUP X
RTS
; KB INTERRUPT ROUTINE
KBINT: PHA ;SAVE REGS
TXA
PHA
LDX KBD ;GET CHR FROM KB
LDAI 302 ;CLEAR KB INTERUPT
STA KBC
CPXI 300 ;Shift key index.
BNE SHFTCK
STXZ SHFT ;Set shift flag.
BEQ KBRTRN ;Jump.
SHFTCK: BITZ SHFT ;Ck if last key = shift
BPL CLRIT
TXA
ANDI 277 ;And out 100 bit.
TAX
LDAI 0 ;Reset shift flag.
STAZ SHFT
CLRIT: CLI ;CLEAR INTERUPT MASK
OWAIT: LDA ACIAC
ANDI 2 ;CHECK IF FULL
BEQ OWAIT
LDAX CHRTBL ;CONVERT KB TO ASCCI
STA ACIAD ;OUTPUT IT
KBRTRN: LDAI 377
STAZ OFFL ;Reset off delay count.
PLA ;RESTORE REGS
TAX
PLA
RTI ;RETURN
;ERASE CURSOR
CKERA: LDYZ CURVIS
BMI NOS ;CK IF ON SCREEN
LDXI 0
LDAIX CUR
; GEN CHR
WCHR: TAX ;X ← ASCII CHR
LDAX CGEN0 ;FILL REBUF COLS 0-4
STAY REBUF0
LDAX CGEN1
STAY REBUF1
LDAX CGEN2
STAY REBUF2
LDAX CGEN3
STAY REBUF3
LDAX CGEN4
STAY REBUF4
NOS: RTS
; <bspace>
BS: JSR CKERA ;ERASE OLD CURSOR IF ON SCREEN
LDAZ CUR ;DECREMENT CURSOR
BNE NOBACK
DECZ CUR+1
LDAZ CUR+1
CMPI SD-1 ;CK IF BEFORE BEGINING
BNE NOBACK
LDAI ED-1 ;WRAP AROUND
STAZ CUR+1
NOBACK: DECZ CUR
JMP CKCUR ;SHOW CURSOR IF ON SCREEN
; CURSOR OFF LINE
OFFLIN: DECZ CUR ;FIX CUR FOR <cr>
JSR CR ;<cr>
JMP RLF ;<lf>, CK SCROLL AND UPDATE
; RS232 INTERRUPT ROUTINE
RSINT: PHA ;SAVE REGS
TXA
PHA
TYA
PHA
LDA ACIAD ;GET CHR FROM ACIA
ANDI 177 ;7 BITS
BEQ RSRTRN ;Check for nulls.
CMPI 30 ;CONTROL CODES
BCC SCNTRL
CMPI 10 ;<bspace>
BEQ BS
PCHR: LDXI 0
STAIX CUR ;STORE IN ABUF
LDYZ CURVIS ;CK IF IN WINDOW
BMI INCUR
JSR WCHR ;WRITE CHR IN REBUF
INCUR: INCZ CUR ;INCREMENT CURSOR
LDAZ CUR
ANDI 77
BEQ OFFLIN ;BRANCH IF OFF END OF LINE
CKCUR: JSR CKVIS ;SHOW CURSOR IF ON SCREEN
JSR SHOCUR ;XOR CURSOR INTO REBUF
RSRTRN: LDAI 377
STAZ OFFL ;Reset off delay count.
PLA ;RESTORE REGS
TAY
PLA
TAX
PLA
RTI ;RETURN
; FOLLOW CURSOR
FOLLOW: LDXZ WINDOW
LDYZ WINDOW+1
LDAZ CUR
ANDI 300 ;SET CURSOR AT BOTTOM RIGHT OF WINDOW
SEC
SBCI 300
STAZ WINDOW
LDAZ CUR+1
SBCI 0
CMPI SD-1
BNE NOTB4
LDAI ED-1
NOTB4: STAZ WINDOW+1
LDAZ CUR ;SET CURSOR AT RIGHT
ANDI 77
CMPI CPL
BCC OK
SBCI CPL-1
ORAZ WINDOW
STAZ WINDOW
OK: CPXZ WINDOW ;UPDATE SCREEN IF DIFFERENT
BNE SETFLG
CPYZ WINDOW+1
BNE SETFLG
BEQ RSRTRN
;Oldest text.
OLDEST: LDAZ CUR
ANDI 300
CLC
ADCI 100 ;Next line.
STAZ WINDOW
LDAZ CUR+1
ADCI 0
CMPI ED
BNE NOPASS
LDAI SD
NOPASS: STAZ WINDOW+1
BNE SETFLG ;JUMP.
; RS232 CONTROL
SCNTRL: CMPI 26 ;CUR ← RIGHT BOTTOM
BEQ FOLLOW
CMPI 12 ;<lf>
BEQ RLF
CMPI 15 ;<cr>
BEQ RCR
CMPI 13 ;SCROLL UP
BEQ SCRLU
CMPI 14 ;SCROLL DOWN
BEQ SCRLD
CMPI 22 ;TOGGLE BRIGHTNESS
BEQ BRIGHT
CMPI 20 ;RIGHT
BEQ RIGHT
CMPI 21 ;SET AT LEFT
BEQ LEFT
CMPI 7 ;ERROR
BEQ JRTRN
CMPI 27 ;Oldest.
BEQ OLDEST
JMP PCHR ;PRINT IT ANYWAY
; <lf>
RLF: JSR LF ;<lf>
JMP SETFLG ;UPDATE SCREEN
; <cr>
RCR: JSR CKERA ;ERASE OLD CURSOR
JSR CR
JMP CKCUR ;SHOW CURSOR IF ON SCREEN
; SCROLL DOWN
SCRLD: LDAZ WINDOW
CLC
ADCI 100 ;FOR 64 CHRS
STAZ WINDOW
BCC SETFLG
INCZ WINDOW+1
LDAZ WINDOW+1
CMPI ED
BNE SETFLG
LDAI SD
STAZ WINDOW+1
SETFLG: JSR CKVIS
INCZ UPFLG ;UPDATE SCREEN
JRTRN: JMP RSRTRN ;SET UPDATE FLAG
; SCROLL UP
SCRLU: LDAZ WINDOW
SEC
SBCI 100 ;64 CHRS PER LINE
STAZ WINDOW
BCS SETFLG
DECZ WINDOW+1
LDAZ WINDOW+1
CMPI SD-1
BNE SETFLG
LDAI ED-1
STAZ WINDOW+1
JMP SETFLG
; BRIGHTNESS
BRIGHT: LDAZ BRT
ANDI 1
EORI 1 ;TOGGLE
STAZ BRT
JMP RSRTRN
; SET WINDOW AT LEFT OF PAGE
LEFT: LDAZ WINDOW
ANDI 300
STAZ WINDOW
LDAI 1 ;1 FOR NO RIGHT SHIFT AND UPDATE SCREEN
STAZ UPFLG
JMP SETFLG
; WINDOW RIGHT
RIGHT: LDAZ UPFLG
EORI 200 ;TOGGLE RIGHT SHIFT BIT
STAZ UPFLG
LDAI SPEED
STAZ SHIFT
JMP RSRTRN
; CK IF IN WINDOW
CKVIS: LDYI 377 ;SET NO SHOW
LDAZ CUR ;GET DISTANCE
SEC
SBCZ WINDOW
STAZ DIS
LDAZ CUR+1
SBCZ WINDOW+1
BCS CKEQ
ADCI 4 ;IF NEG, ADD BUF LEN
CKEQ: STAZ DIS+1
BNE NOTVIS ;NO SHOW IF ≥ 256
LDAZ DIS
ANDI 77
CMPI CPL ;NO SHOW IF ≥ 28
BCS NOTVIS
STAZ CURVIS
LDAZ DIS ;GET REBUF INDEX
ANDI 300
ROLA
ROLA
ROLA
TAX
LDAX ROWTBL ;NLINES * 28
ADCZ CURVIS
TAY
NOTVIS: STYZ CURVIS
RTS
ROWTBL: 0
CPL
CPL*2
CPL*3
SHOCUR: LDYZ CURVIS
BMI NOSHO
LDAY REBUF0 ;OR CURSOR INTO CHR
EORI 100
STAY REBUF0
LDAY REBUF1
EORI 100
STAY REBUF1
LDAY REBUF2
EORI 100
STAY REBUF2
LDAY REBUF3
EORI 100
STAY REBUF3
LDAY REBUF4
EORI 100
STAY REBUF4
NOSHO: RTS
; HOME CURSOR.
HOME: LDAI 0 ;CURSOR ← WINDOW ← TOP
STAZ CUR
STAZ WINDOW
STAZ CURVIS
LDAI SD
STAZ CUR+1
STAZ WINDOW+1
STAZ UPFLG ;SET UPDATE FLAG
RTS
; <lf> SUBROUTINE
LF: LDAZ CUR
CLC
ADCI 100 ;CUR ← CUR + 64
STAZ CUR
BCC CTEOL
INCZ CUR+1
LDAZ CUR+1
CMPI ED
BNE CTEOL
LDAI SD ;WRAP AROUND
STAZ CUR+1
; CLEAR TO END OF LINE.
CTEOL: LDAZ CUR
ANDI 77
EORI 77
TAY ;Y ← # CHRS LEFT ON LINE
LDAI 40 ;<space>
CLRL: STAIY CUR ;FILL CURSOR TO CURSOR + CPL
DEY ;WITH SPACES
BPL CLRL
RTS
; <cr> SUBROUTINE
CR: LDAZ CUR ;CUR ← CUR ∧ ¬77
ANDI 300
STAZ CUR
RTS
; ASCII TABLE BITS 7 6 5 4 3 2 1 0
; LOC 176000 CNTL SHFT S2 S1 S0 RL2 RL1 RL0
LOC 176000
CHRTBL:
7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ;CONTROL
7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7
7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7
7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7
7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7
7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7
7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7
7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7
7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ;CNTL SHFT
7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7
7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7
7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7
7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7
7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7
7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7
7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7
7 ↔ "?" ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ "'" ↔ 13 ;SHIFT
"+" ↔ "(" ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 42 ↔ 26
"-" ↔ ")" ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ "@" ↔ 27
"*" ↔ "[" ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ "$" ↔ " "
"/" ↔ "]" ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ ":" ↔ 22
"=" ↔ "%" ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ ";" ↔ 12
7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7
7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7
7 ↔ "#" ↔ "A" ↔ "G" ↔ "M" ↔ "S" ↔ "Y" ↔ 14
"1" ↔ "6" ↔ "B" ↔ "H" ↔ "N" ↔ "T" ↔ "Z" ↔ 20
"2" ↔ "7" ↔ "C" ↔ "I" ↔ "O" ↔ "U" ↔ "-" ↔ 21
"3" ↔ "8" ↔ "D" ↔ "J" ↔ "P" ↔ "V" ↔ "!" ↔ " "
"4" ↔ "9" ↔ "E" ↔ "K" ↔ "Q" ↔ "W" ↔ "." ↔ 10
"5" ↔ "0" ↔ "F" ↔ "L" ↔ "R" ↔ "X" ↔ "," ↔ 15
7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7
7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7 ↔ 7
;CHR GEN ⊗ = GRAPHICS
; 0 1 2 3 4 5 6 7
; 0/ ⊗ ⊗ ⊗ ⊗ ⊗ ⊗
; 10/ ⊗
; 20/
; 30/ ⊗ ⊗ ⊗ ⊗ ⊗ ⊗ ⊗ ⊗
; 40/ ! " # $ % & '
; 50/ ( ) * + , - . /
; 60/ 0 1 2 3 4 5 6 7
; 70/ 8 9 : ; < = > ?
;100/ @ A B C D E F G
;110/ H I J K L M N O
;120/ P Q R S T U V W
;130/ X Y Z [ \ ] ↑ ←
;140/ a b c d e f g
;150/ h i j k l m n o
;160/ p q r s t u v w
;170/ x y z { | }
LOC 176400 ;LOC 176400
CGEN0: 000 ↔ 000 ↔ 000 ↔ 000 ↔ 010 ↔ 010 ↔ 000 ↔ 000
000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 000
000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 010 ↔ 000 ↔ 000
010 ↔ 000 ↔ 010 ↔ 010 ↔ 010 ↔ 000 ↔ 010 ↔ 010
000 ↔ 157 ↔ 003 ↔ 024 ↔ 056 ↔ 043 ↔ 060 ↔ 003
034 ↔ 101 ↔ 044 ↔ 010 ↔ 100 ↔ 010 ↔ 140 ↔ 040
076 ↔ 102 ↔ 102 ↔ 042 ↔ 010 ↔ 057 ↔ 060 ↔ 101
066 ↔ 106 ↔ 146 ↔ 114 ↔ 010 ↔ 024 ↔ 101 ↔ 002
164 ↔ 176 ↔ 177 ↔ 076 ↔ 177 ↔ 177 ↔ 177 ↔ 076
177 ↔ 101 ↔ 040 ↔ 177 ↔ 177 ↔ 177 ↔ 177 ↔ 076
177 ↔ 076 ↔ 177 ↔ 046 ↔ 001 ↔ 077 ↔ 037 ↔ 177
143 ↔ 003 ↔ 141 ↔ 177 ↔ 002 ↔ 101 ↔ 004 ↔ 010
000 ↔ 044 ↔ 177 ↔ 070 ↔ 060 ↔ 070 ↔ 010 ↔ 046
177 ↔ 172 ↔ 040 ↔ 177 ↔ 101 ↔ 174 ↔ 174 ↔ 070
177 ↔ 006 ↔ 174 ↔ 110 ↔ 004 ↔ 074 ↔ 034 ↔ 074
104 ↔ 047 ↔ 104 ↔ 010 ↔ 177 ↔ 000 ↔ 101 ↔ 000
CGEN1: 000 ↔ 000 ↔ 000 ↔ 000 ↔ 010 ↔ 010 ↔ 000 ↔ 000
000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 000
000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 010 ↔ 000 ↔ 000
010 ↔ 000 ↔ 010 ↔ 010 ↔ 010 ↔ 000 ↔ 010 ↔ 010
000 ↔ 157 ↔ 000 ↔ 177 ↔ 111 ↔ 023 ↔ 116 ↔ 000
042 ↔ 042 ↔ 030 ↔ 010 ↔ 040 ↔ 010 ↔ 140 ↔ 020
121 ↔ 177 ↔ 141 ↔ 101 ↔ 014 ↔ 111 ↔ 110 ↔ 041
111 ↔ 051 ↔ 146 ↔ 054 ↔ 024 ↔ 024 ↔ 042 ↔ 001
124 ↔ 011 ↔ 111 ↔ 101 ↔ 101 ↔ 111 ↔ 011 ↔ 101
010 ↔ 177 ↔ 100 ↔ 010 ↔ 100 ↔ 002 ↔ 004 ↔ 101
011 ↔ 101 ↔ 011 ↔ 111 ↔ 001 ↔ 100 ↔ 040 ↔ 040
024 ↔ 004 ↔ 121 ↔ 101 ↔ 004 ↔ 101 ↔ 002 ↔ 034
000 ↔ 124 ↔ 110 ↔ 104 ↔ 110 ↔ 124 ↔ 176 ↔ 111
010 ↔ 000 ↔ 100 ↔ 040 ↔ 177 ↔ 004 ↔ 010 ↔ 104
006 ↔ 011 ↔ 010 ↔ 124 ↔ 004 ↔ 100 ↔ 040 ↔ 100
050 ↔ 110 ↔ 144 ↔ 066 ↔ 000 ↔ 000 ↔ 101 ↔ 000
CGEN2: 000 ↔ 017 ↔ 177 ↔ 170 ↔ 010 ↔ 010 ↔ 010 ↔ 000
000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 170
000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 052 ↔ 000 ↔ 000
170 ↔ 017 ↔ 017 ↔ 170 ↔ 017 ↔ 177 ↔ 177 ↔ 177
000 ↔ 000 ↔ 003 ↔ 024 ↔ 177 ↔ 010 ↔ 121 ↔ 000
101 ↔ 034 ↔ 030 ↔ 076 ↔ 000 ↔ 010 ↔ 000 ↔ 010
111 ↔ 100 ↔ 121 ↔ 101 ↔ 012 ↔ 111 ↔ 114 ↔ 021
111 ↔ 031 ↔ 000 ↔ 000 ↔ 042 ↔ 024 ↔ 024 ↔ 121
164 ↔ 011 ↔ 111 ↔ 101 ↔ 101 ↔ 111 ↔ 011 ↔ 101
010 ↔ 101 ↔ 100 ↔ 024 ↔ 100 ↔ 004 ↔ 010 ↔ 101
011 ↔ 121 ↔ 031 ↔ 111 ↔ 177 ↔ 100 ↔ 100 ↔ 020
010 ↔ 170 ↔ 111 ↔ 101 ↔ 010 ↔ 177 ↔ 177 ↔ 052
000 ↔ 124 ↔ 110 ↔ 104 ↔ 110 ↔ 124 ↔ 011 ↔ 111
010 ↔ 000 ↔ 100 ↔ 020 ↔ 100 ↔ 170 ↔ 004 ↔ 104
011 ↔ 011 ↔ 004 ↔ 124 ↔ 077 ↔ 100 ↔ 100 ↔ 074
020 ↔ 110 ↔ 124 ↔ 101 ↔ 000 ↔ 000 ↔ 076 ↔ 000
CGEN3: 000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 010 ↔ 010 ↔ 000
000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 010
000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 010 ↔ 000 ↔ 000
000 ↔ 010 ↔ 000 ↔ 010 ↔ 010 ↔ 010 ↔ 000 ↔ 010
000 ↔ 000 ↔ 000 ↔ 177 ↔ 111 ↔ 144 ↔ 046 ↔ 000
000 ↔ 000 ↔ 044 ↔ 010 ↔ 000 ↔ 010 ↔ 000 ↔ 004
105 ↔ 000 ↔ 111 ↔ 111 ↔ 177 ↔ 111 ↔ 112 ↔ 011
111 ↔ 011 ↔ 000 ↔ 000 ↔ 101 ↔ 024 ↔ 010 ↔ 011
104 ↔ 011 ↔ 111 ↔ 101 ↔ 101 ↔ 111 ↔ 011 ↔ 111
010 ↔ 000 ↔ 100 ↔ 042 ↔ 100 ↔ 002 ↔ 020 ↔ 101
011 ↔ 041 ↔ 051 ↔ 111 ↔ 001 ↔ 100 ↔ 040 ↔ 040
024 ↔ 004 ↔ 105 ↔ 000 ↔ 020 ↔ 000 ↔ 002 ↔ 010
000 ↔ 124 ↔ 110 ↔ 104 ↔ 110 ↔ 124 ↔ 011 ↔ 106
010 ↔ 000 ↔ 075 ↔ 050 ↔ 000 ↔ 004 ↔ 004 ↔ 104
011 ↔ 006 ↔ 004 ↔ 124 ↔ 104 ↔ 100 ↔ 040 ↔ 100
050 ↔ 104 ↔ 114 ↔ 101 ↔ 000 ↔ 000 ↔ 010 ↔ 000
CGEN4: 000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 010 ↔ 010 ↔ 000
000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 010
000 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 010 ↔ 000 ↔ 000
000 ↔ 010 ↔ 000 ↔ 010 ↔ 010 ↔ 010 ↔ 000 ↔ 010
000 ↔ 000 ↔ 000 ↔ 024 ↔ 062 ↔ 142 ↔ 100 ↔ 000
000 ↔ 000 ↔ 000 ↔ 010 ↔ 000 ↔ 010 ↔ 000 ↔ 002
076 ↔ 000 ↔ 106 ↔ 066 ↔ 010 ↔ 061 ↔ 061 ↔ 007
066 ↔ 006 ↔ 000 ↔ 000 ↔ 000 ↔ 024 ↔ 000 ↔ 006
174 ↔ 176 ↔ 066 ↔ 042 ↔ 076 ↔ 101 ↔ 001 ↔ 072
177 ↔ 000 ↔ 077 ↔ 101 ↔ 100 ↔ 177 ↔ 177 ↔ 076
006 ↔ 136 ↔ 106 ↔ 062 ↔ 001 ↔ 077 ↔ 037 ↔ 177
143 ↔ 003 ↔ 103 ↔ 000 ↔ 040 ↔ 000 ↔ 004 ↔ 010
000 ↔ 170 ↔ 060 ↔ 104 ↔ 177 ↔ 130 ↔ 002 ↔ 077
160 ↔ 000 ↔ 000 ↔ 104 ↔ 000 ↔ 170 ↔ 170 ↔ 070
006 ↔ 177 ↔ 010 ↔ 044 ↔ 104 ↔ 074 ↔ 034 ↔ 074
104 ↔ 077 ↔ 104 ↔ 000 ↔ 000 ↔ 000 ↔ 000 ↔ 000
; INTER VECTS
LOC 177772 ;LOC 177772
NMIV: KBINT∧377 ;NMIV: ABSO KBINT
371
RSTV: 0 ;RSTV: ABSO RSTA
370
IRQV: RSINT∧377 ;IRQV: ABSO RSINT
371
END